home *** CD-ROM | disk | FTP | other *** search
- # SED script for preprocessing embedded doc from source (S. Chamberlain markup)
- # middle pass; most of the work is done here.
- #
- # First, get rid of /*doc* markers; they've done their job in the first pass.
- /^\/\*doc\*/d
- #
- # /*proto* markers may be optionally followed by a *i-style subsubsec, findex
- # entry. This will generate empty @findex and @subsubsection entries if
- # the *proto* is on a line by itself; third pass removes them.
- /^\/\*proto\*/s/^\/\*proto\* *\(.*\)$/@findex \1\
- @subsubsection @code{\1}/
- #
- # /*proto-internal* is just like /*proto* from doc point of view.
- /^\/\*proto-internal\*/s/^\/\*proto-internal\* *\(.*\)$/@findex \1\
- @subsubsection @code{\1}/
- #
- # *i at beginning of line: rest of line is both a subsubsection heading
- # and an entry in function index.
- /^\*i/s/^\*i *\(.*\)$/@findex \1\
- @subsubsection @code{\1}/
- #
- # Two alternative docn block ends, '*/' and '*-*/' on lines by themselves;
- # replace by blank lines (for texinfo source readability).
- /^\*\/$/c\
-
- /^\*-\*\/$/c\
-
- # {* and *} are standins for comment markers (originally embedded in .c
- # comments)---turn into real comment markers:
- s/{\*/\/\*/
- s/\*}/\*\//
- #
- # '*+++' and '*---' span a block of text that includes both example lines
- # (marked by leading '$') and explanatory text (to be italicized).
- # Italicize lines lacking '$':
- /\*\+\+\+/,/\*---/s/^\([^$].*\)$/@i{\1}/
- #
- # We don't need *+++ and *--- markers any more; kill them (trailing marker
- # becomes blank line for readability)
- /\*\+\+\+/d
- /\*---/c\
-
- # Any line beginning with '$' is made an example line; third pass later
- # coalesces adjacent example blocks. *DO NOT* introduce extra space after
- # @end example, so we can spot adjacent ones in third pass.
- /^\$/i\
- @example
- /^\$/a\
- @end example
- #
- # In any example line, turn '{' and '}' into '@{' and '@}'
- ###/^\$/s/{/@{/g
- ###/^\$/s/}/@}/g
- #
- # Now delete the '$' markers themselves:
- /^\$/s/\$//
- #
- # *+ and *- delimit large examples to be enclosed in cartouches.
- /^\*\+$/c\
- @lisp\
- @c @cartouche
- /^\*-$/c\
- @c @end cartouche\
- @end lisp\
-
- # '*;' introduces an example which may have a single line or multiple lines;
- # it extends until the next semicolon (which is also printed).
- # One-line case: (do this first; else second line address for multi-line case
- # will include random text til we happen to end a line in a doc comment with
- # a semicolon)
- /^\*;.*;$/{
- s/^\*;/@example\
- /
- s/;$/;\
- @end example\
- /
- }
- # Multi-line case:
- /^\*;/,/.*;$/{
- s/^\*;/@example\
- /
- s/;$/;\
- @end example\
- /
- }
-